home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
SuperHack
/
SuperHack CD.bin
/
CODING
/
PC
/
SNIP9611.ZIP
/
RGIQSORT.C
< prev
next >
Wrap
C/C++ Source or Header
|
1996-11-24
|
1KB
|
55 lines
/* +++Date last modified: 02-Nov-1995 */
/*
** quicksort.c -- quicksort integer array
**
** public domain by Raymond Gardner 12/91
*/
#include "snipsort.h"
static void swap(int *a, int *b)
{
register int t;
t = *a;
*a = *b;
*b = t;
}
void quicksort(int v[], unsigned n)
{
unsigned i, j, ln, rn;
while (n > 1)
{
swap(&v[0], &v[n/2]);
for (i = 0, j = n; ; )
{
do
--j;
while (v[j] > v[0]);
do
++i;
while (i < j && v[i] < v[0]);
if (i >= j)
break;
swap(&v[i], &v[j]);
}
swap(&v[j], &v[0]);
ln = j;
rn = n - ++j;
if (ln < rn)
{
quicksort(v, ln);
v += j;
n = rn;
}
else
{
quicksort(v + j, rn);
n = ln;
}
}
}